密码管理

用户

密码管理

更改密码

要更改您的Kerberos密码,请使用kpasswd命令。它会要求您输入您的旧密码(以防止别人在不在线时更换电脑,并更改密码),然后再提示两次。(您必须键入两次的原因是确保您已正确键入。)例如,用户david将执行以下操作:

shell% kpasswd
Password for david: <- Type your old password.
Enter new password: <- Type your new password.
Enter it again: <- Type the new password again.
Password changed.
shell%

更改密码后,更改将在系统中传播一段时间。根据您的系统设置,这可能是几分钟到一个小时或更长的时间。如果您需要在更改密码后立即获得新的Kerberos门票,请尝试使用新密码。如果新密码不起作用,请再次尝试使用旧密码。

授予访问您的帐户

如果您需要授权某人登录您的帐户,您可以通过Kerberos进行登录,而不会告诉该用户您的密码。只需在您的home目录中创建一个名为.k5login的文件。此文件应包含您希望访问的每个人的Kerberos主体。每个principal必须每行分开。这是一个.k5login文件的示例:

jennifer@ATHENA.MIT.EDU
david@EXAMPLE.COM

该文件允许用户jennifer和david使用您的用户ID,前提是他们在各自的领域中具有Kerberos门票。如果您将通过网络登录到其他主机,则需要在每个主机上的.k5login文件中包含您自己的Kerberos主体。

使用.k5login文件比发出密码要安全得多,因为:

  • 您可以随时通过从.k5login文件中删除主体来随时访问。
  • 虽然用户可以在一个特定的主机上完全访问您的帐户(或者如果您的.k5login文件被共享,例如,通过NFS),该用户不会继承您的网络权限。
  • Kerberos保留谁获得门票的日志,所以系统管理员可以在必要时了解谁能够在特定时间使用您的用户ID。
    一个常见的应用是在root的主目录中设置一个.k5login文件,将该机器的root访问权限授予列出的Kerberos主体。这允许系统管理员允许用户在本地进行本地登录,或者以root用户身份远程登录,而无需发出root密码,无需任何人在网络上键入root密码。

票务管理

在许多系统上,Kerberos内置在登录程序中,您可以在登录时自动获取票证。其他程序(如ssh)可将票据的副本转发到远程主机。大部分这些节目也会在退出时自动销毁您的门票。但是,麻省理工学院建议您通过它们,销毁您的Kerberos门票。一种方法是将kdestroy命令添加到.logout文件中。另外,如果您将远离机器,并且关心使用您的权限的入侵者,最安全的方式是销毁所有票证副本,或使用锁定屏幕的屏幕保护程序。

Kerberos票证属性

http://web.mit.edu/kerberos/www/krb5-latest/doc/user/tkt_mgmt.html

获得门票使用kinit

如果站点已将Kerberos V5与登录系统集成,登录时将自动获取Kerberos票证,否则您可能需要使用kinit程序显式获取Kerberos票证 。同样,如果您的Kerberos票证过期,请使用kinit程序获取新的。

要使用kinit程序,只需键入kinit,然后在提示符下键入密码。例如,Jennifer(其用户名为 jennifer)适用于Bleep,Inc.(一家域名为mit.edu和Kerberos领域ATHENA.MIT.EDU的虚构公司)。她会输入:

shell% kinit
Password for jennifer@ATHENA.MIT.EDU: <-- [Type jennifer's password here.]
shell%

默认情况下,kinit假定您希望在您的默认领域使用自己的用户名。假设詹妮弗的朋友大卫正在拜访,他想借一个窗口来检查他的邮件。大卫需要在自己的领域EXAMPLE.COM上获得门票。他会输入:

shell% kinit david@EXAMPLE.COM
Password for david@EXAMPLE.COM: <-- [Type david's password here.]
shell%

大卫然后会有门票,他可以用来登录自己的机器。请注意,他在Jennifer的机器上键入了他的密码,但是并没有通过网络。本地主机上的Kerberos对其他领域的KDC执行身份验证。

如果您想要将您的门票转发给另一个主机,则需要申请可转寄的ticket。您可以通过指定-f选项来执行此操作 :

shell% kinit -f
Password for jennifer@ATHENA.MIT.EDU: <-- [Type your password here.]
shell%

请注意,kinit并没有告诉你它获得了可前往的门票; 您可以使用klist命令验证这一点
通常,您的ticket对您的系统的默认ticket生命周期有好处,这在许多系统上是十小时。您可以使用-l选项指定不同的票证生存期。将字母s添加 到秒数,m表示分钟,h表示小时,或 d表示天数。例如,要获得david@EXAMPLE.COM的可前往三个小时的优惠 券,您可以输入:

shell% kinit -f -l 3h david@EXAMPLE.COM
Password for david@EXAMPLE.COM: <-- [Type david's password here.]
shell%

不能混合单位; 指定3h30m的寿命将导致错误。还要注意,大多数系统指定最大票证生存期。如果您要求更长的使用寿命,则会自动将其截断到最长生命周期。

用klist查看门票

The klist command shows your tickets. When you first obtain tickets, you will have only the ticket-granting ticket. The listing would look like this:

shell% klist
Ticket cache: /tmp/krb5cc_ttypa
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting Expires Service principal
06/07/04 19:49:21 06/08/04 05:49:19 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
shell%

票据缓存是您的票证文件的位置。在上面的例子中,这个文件被命名为/ tmp / krb5cc_ttypa。默认主体是您的Kerberos主体。

“有效开始”和“到期”字段描述票证有效的时间段。“服务主体”描述每张票。票证授予票有第一个组件 krbtgt,第二个组成部分是领域名称。

现在,如果jennifer连接到机器daffodil.mit.edu,然后再次键入“klist”,她会得到以下结果:

shell% klist
Ticket cache: /tmp/krb5cc_ttypa
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting Expires Service principal
06/07/04 19:49:21 06/08/04 05:49:19 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
06/07/04 20:22:30 06/08/04 05:49:19 host/daffodil.mit.edu@ATHENA.MIT.EDU
shell%

jennifer used ssh to connect to the host daffodil.mit.edu, the ssh program presented her ticket-granting ticket to the KDC and requested a host ticket for the host daffodil.mit.edu. The KDC sent the host ticket, which ssh then presented to the host daffodil.mit.edu, and she was allowed to log in without typing her password.

Suppose your Kerberos tickets allow you to log into a host in another domain, such as trillium.example.com, which is also in another Kerberos realm, EXAMPLE.COM. If you ssh to this host, you will receive a ticket-granting ticket for the realm EXAMPLE.COM, plus the new host ticket for trillium.example.com. klist will now show:

shell% klist
Ticket cache: /tmp/krb5cc_ttypa
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting Expires Service principal
06/07/04 19:49:21 06/08/04 05:49:19 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
06/07/04 20:22:30 06/08/04 05:49:19 host/daffodil.mit.edu@ATHENA.MIT.EDU
06/07/04 20:24:18 06/08/04 05:49:19 krbtgt/EXAMPLE.COM@ATHENA.MIT.EDU
06/07/04 20:24:18 06/08/04 05:49:19 host/trillium.example.com@EXAMPLE.COM
shell%

Here is a sample listing. In this example, the user jennifer obtained her initial tickets (I), which are forwardable (F) and postdated (d) but not yet validated (i)

shell% klist -f
Ticket cache: /tmp/krb5cc_320
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting Expires Service principal
31/07/05 19:06:25 31/07/05 19:16:25 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
Flags: FdiI
shell%

用kdestroy摧毁门票

您的Kerberos门票证明您确实是您自己,如果有人访问存储他们的计算机,门票可能被盗。如果发生这种情况,拥有它们的人可以像你一样伪装,直到它们过期。因此,当您远离计算机时,您应该销毁您的Kerberos门票。

销毁你的票很容易。只需键入kdestroy:

shell% kdestroy
shell%

用户配置文件

.k5login

说明

位于用户主目录中的.k5login文件包含Kerberos主体的列表。具有该文件中的主体的有效票证的任何人都可以使用其文件所在的主目录中的用户的UID进行主机访问。一个常见的用法是将.k5login文件放在root的主目录中,从而授予系统管理员通过Kerberos对主机进行远程root访问。

示例

Suppose the user alice had a .k5login file in her home directory containing just the following line:

bob@FOOBAR.ORG

This would allow bob to use Kerberos network applications, such as ssh(1), to access alice‘s account, using bob‘s Kerberos tickets. In a default configuration (with k5login_authoritative set to true in krb5.conf), this .k5login file would not let alice use those network applications to access her account, since she is not listed! With no .k5login file, or with k5login_authoritative set to false, a default rule would permit the principal alice in the machine’s default realm to access the alice account.
让我们进一步假设爱丽丝是系统管理员。Alice和其他系统管理员将在每个主机的root的.k5login文件中拥有其主体:

alice@BLEEP.COM
joeadmin/root@BLEEP.COM

这将允许系统管理员使用其Kerberos票证登录到这些主机,而不必键入root密码。Note that because bob retains the Kerberos tickets for his own principal, bob@FOOBAR.ORG, he would not have any of the privileges that require alice‘s tickets, such as root access to any of the site’s hosts, or the ability to change alice‘s password.

.k5identity

驻留在用户主目录中的.k5identity文件包含基于正在访问的服务器选择客户端主体的规则列表。这些规则用于在可能时选择缓存集合中的凭据高速缓存。

以#开头的空行和行将被忽略。每行的格式如下:
principal field=value ...
如果服务器主体满足所有的字段约束,则选择principal作为客户主体。以下字段被识别:

  • 领域
    如果服务器主体的领域是已知的,则它与值匹配,这可能是使用shell通配符的模式。对于基于主机的服务器主体,通常只有在krb5.conf中有一个domain_realm部分的主机名映射时,这个领域通常才会被知道。
  • 服务
    如果服务器主体是基于主机的主体,则其服务组件与值匹配,该值可能是使用shell通配符的模式。
  • host
    如果服务器主体是基于主机的主体,则其主机名组件将转换为小写并与值匹配,该值可能是使用shell通配符的模式。
    如果服务器主体与.k5identity文件中的多个行的约束匹配,则使用第一个匹配行中的主体。如果没有行匹配,凭证将被选择其他方式,例如领域启发式或当前主缓存。

示例

.k5identity file selects the client principal alice@KRBTEST.COM if the server principal is within that realm, the principal alice/root@EXAMPLE.COM if the server host is within a servers subdomain, and the principal alice/mail@EXAMPLE.COM when accessing the IMAP service on mail.example.com:

alice@KRBTEST.COM realm=KRBTEST.COM
alice/root@EXAMPLE.COM host=*.servers.example.com
alice/mail@EXAMPLE.COM host=mail.example.com service=imap

用户命令

  • kdestroy
  • kinit
  • klist
  • kpasswd
  • krb5-config
  • ksu
  • kswitch
  • kvno
  • sclient